package com.lucky.carcodepro.service;

import cn.dev33.satoken.stp.SaLoginConfig;
import cn.dev33.satoken.stp.StpUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lucky.carcodepro.domain.bo.CurrentContextBo;
import com.lucky.carcodepro.domain.model.UserInfo;
import com.lucky.carcodepro.mapper.UserInfoMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * 用户管理Service业务层处理
 *
 * @author ruoyi
 * @date 2024-09-28
 */
@Slf4j
@Service
public class UserInfoService extends ServiceImpl<UserInfoMapper, UserInfo>
{


    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
    public void wxSilentLogin()
    {
        UserInfo userInfo = new UserInfo();
        {
            // 填充用户信息
            userInfo.setIfTest(false);
        }
        // 用户创建
        this.saveOrUpdate(userInfo);
        // 登录
        if (StpUtil.isLogin())
        {
            /**
             * 已登录的用户，要做的处理 >>>>>  占坑
             * 例： DAU 统计
             */
        } else
        {
            // 写入JWT
            StpUtil.login(
                    userInfo.getId(),
                    SaLoginConfig.setExtra(
                            CurrentContextBo.Fields.user, JSON.toJSONString(userInfo)
                    )
            );
        }
    }
}

